Automatic graphical user interface generation from notification data

ABSTRACT

A computing device is described that receives notification data, and selects, based on the notification data, a template graphical user interface (GUI) view from a plurality of template GUI views. The computing device automatically generates, from a portion of the notification data, an application GUI view that includes the portion of the notification data included within one or more fields of the template GUI view. The computing device outputs, for display, the application GUI view.

BACKGROUND

With technology constantly evolving, and the market viability of newtechnology being uncertain, some developers may wish to avoid spendingresources to update or develop a new mobile application for use with anemerging platform and/or a new type of device. For example, while anapplication developer may create an application for an existing desktop,mobile phone, or tablet computing platform, some application developersmay be unable (e.g., for lack of understanding of the technology) orunwilling (e.g., for lack of funding, human resources, etc.) to alsodevelop a similar application for a new wearable or automotive computingplatform.

SUMMARY

In one example, a method includes receiving, by a computing device,notification data, selecting, by the computing device, based on thenotification data, a template graphical user interface (GUI) view from aplurality of template GUI views, and automatically generating, by thecomputing device, from a portion of the notification data, anapplication GUI view that includes the portion of the notification dataincluded within one or more fields of the template GUI view. The methodfurther includes outputting, by the computing device, for display, theapplication GUI view.

In another example, a computing device includes a display componentconfigured to display information, an input component configured toreceive user input, at least one processor, and a memory. The memoryincludes instructions that, when executed, cause the at least oneprocessor to: receive notification data, select, based on thenotification data, a template graphical user interface (GUI) view from aplurality of template GUI views, and automatically generate, from aportion of the notification data, an application GUI view that includesthe portion of the notification data included within one or more fieldsof the template GUI view. The instructions, when executed, further causethe at least one processor to output, for display, using the displaycomponent, a graphical alert that the notification data was received,receive, via the input component, an indication of user input associatedwith the graphical alert, and responsive to receiving indication of theuser input, replace the graphical alert with the application GUI view.

In an additional example, a computer-readable storage medium comprisinginstructions that, when executed, cause one or more processors of acomputing device to receive notification data, select, based on thenotification data, a template graphical user interface (GUI) view from aplurality of template GUI views, and automatically generate, from aportion of the notification data, an application GUI view that includesthe portion of the notification data included within one or more fieldsof the template GUI view. The instructions, when executed, further causethe one or more processors of the computing device to output, fordisplay, the application GUI view.

The details of one or more examples of the disclosure are set forth inthe accompanying drawings and the description below. Other features,objects, and advantages will be apparent from the description anddrawings, and from the claims.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a conceptual diagram illustrating an example computing deviceconfigured to automatically generate an application graphical userinterface (GUI) view based on a portion of notification data, inaccordance with one or more aspects of the present disclosure.

FIG. 2 is a block diagram illustrating an example computing deviceconfigured to automatically generate an application GUI view based on aportion of notification data, in accordance with one or more aspects ofthe present disclosure.

FIGS. 3A-3D are conceptual diagrams illustrating example application GUIviews automatically generated by an example computing device based on aportion of notification data, in accordance with one or more aspects ofthe present disclosure.

FIG. 4 is a flowchart illustrating example operations of an examplecomputing device configured to automatically generate an application GUIview based on a portion of notification data, in accordance with one ormore aspects of the present disclosure.

DETAILED DESCRIPTION

In general, techniques of this disclosure may enable a computing deviceto automatically generate, from notification data, a graphical userinterface (GUI) that resembles and functions similar to a GUI of acomparable standalone application without actually having to executesuch a standalone application. For example, a computerized watch and amobile phone may each receive, via notification service, separateinstances of the same messaging data. While a messaging applicationexecuting at the mobile phone may present a messaging GUI from which auser can interact with the messaging data, the example computerizedwatch need not execute a similar messaging application to providesimilar access to the data. Instead, the operating system of the examplecomputerized watch may analyze the messaging data upon receipt of thatdata and invoke a new system thread to automatically generate, inreal-time, a customized GUI that the watch has specifically tailored forconveying and facilitating user interactions with the data.Subsequently, when new notification data is received, the examplecomputerized watch may stop the new thread to cease presenting thecustomized messaging GUI, and may invoke yet another new system threadto automatically generate, in real-time, a new customized GUI that thedevice has specifically tailored for conveying and facilitating userinteractions with the new notification data. In this way, the examplecomputing device may automatically provide tailored user experiences forinteracting with notification data without having to execute multipledifferent on-device applications to convey similar information.

By relying only on information obtained from an already existingnotification service, and built-in templates base on appealing GUIdesign, the example computing device may improve user engagement withnotification data while simultaneously reducing developer time andresources to obtain similar user engagement. That is, developers neednot invest time and resources creating, marketing, and supporting newapplications that execute at the example computing device to effectuatethe kind of application user experience that user may be used to. Inaddition, the example computing device need not waste memory andvaluable processing overhead, by storing and later executing severaldifferent on-device applications to handle the several different typesof notification data that the example computing device may receive. Bynot having to store instructions for, and not having to launchindividual applications to provide application specific GUIs, theexample computing device may conserve memory resources, execute faster,perform fewer operations, and require less infrastructure to provide aGUI experience that previously required on-device storage and executionof multiple custom or feature specific applications.

As used throughout the disclosure, the term “notification data” is usedto describe various types of information that may indicate theoccurrence of an event associated with various platforms, applications,and services executing within a computing system or executionenvironment, including at one or more computing devices. For example,notification data may include, but is not limited to, informationspecifying an event such as: the receipt of a communication message(e.g., e-mail, instant message, SMS, etc.) by a messaging accountassociated with a user of a computing devices, the receipt ofinformation by a social networking account associated with a user of acomputing device, a reminder of a calendar event (e.g., meetings,appointments, etc.) associated with a calendar account of a user of acomputing devices, information generated and/or received by athird-party application executing at a computing device or incommunication with a computing device, the transmittal and/or receipt ofinter-component communications between two or more components ofplatforms, applications, and/or services executing at a computingdevices, etc.

FIG. 1 is a conceptual diagram illustrating an example computing deviceconfigured to automatically generate an application graphical userinterface (GUI) view based on a portion of notification data, inaccordance with one or more aspects of the present disclosure. In theexample of FIG. 1, computing device 100 is a wearable computing device(e.g., a computerized watch or so-called smart watch device). Ingeneral, computing device 100 may be any computing device configured toreceive notification data and display graphical information associatedwith received notification data. For instance, computing device 100 mayrepresent a smart phone, a tablet computer, a laptop computer,computerized eyewear, computerized gloves, or any other type of portablecomputing device. Additional examples of computing device 100 includedesktop computers, televisions, personal digital assistants (PDA),portable gaming systems, media players, e-book readers, mobiletelevision platforms, automobile computing systems, vehicle (e.g.,automobile, aircraft, or other vehicle) cockpit displays, or any othertypes of wearable and non-wearable, mobile or non-mobile computingdevices that may output a graphical keyboard for display.

Computing device 100 includes a presence-sensitive display (PSD) 112, UImodule 120, and notification module 122. Modules 120 and 122 may performoperations described using software, hardware, firmware, or a mixture ofhardware, software, and firmware residing in and/or executing atcomputing device 100. One or more processors of computing device 100 mayexecute instructions that are stored at a memory or other non-transitorystorage medium of computing device 100 to perform the operations ofmodules 120 and 122. Computing device 100 may execute modules 120 and122 as virtual machines executing on underlying hardware. Modules 120and 122 may execute as one or more services of an operating system orcomputing platform. Modules 120 and 122 may execute as one or moreexecutable programs at an application layer of a computing platform.

PSD 112 of computing device 100 may function as respective input and/oroutput devices for computing device 100. PSD 112 may be implementedusing various technologies. For instance, PSD 112 may function as inputdevices using presence-sensitive input screens, such as resistivetouchscreens, surface acoustic wave touchscreens, capacitivetouchscreens, projective capacitance touchscreens, pressure sensitivescreens, acoustic pulse recognition touchscreens, or anotherpresence-sensitive display technology. PSD 112 may also function asoutput (e.g., display) devices using any one or more display devices,such as liquid crystal displays (LCD), dot matrix displays, lightemitting diode (LED) displays, organic light-emitting diode (OLED)displays, e-ink, or similar monochrome or color displays capable ofoutputting visible information to a user of computing device 100.

PSD 112 may detect input (e.g., touch and non-touch input) from a userof respective computing device 100. PSD 112 may detect indications ofinput by detecting one or more gestures from a user (e.g., the usertouching, pointing, and/or swiping at or near one or more locations ofPSD 112 with a finger or a stylus pen). PSD 112 may output informationto a user in the form of a user interface (e.g., user interface 114,user interface 116, etc.), which may be associated with functionalityprovided by computing device 100.

User interfaces 114 and 116 are described below in greater detail. Ingeneral, user interface 114 represents a graphical alert to notificationdata received by computing device 100, whereas user interface 116represents an application-style, GUI that computing device 100automatically generates from the notification data associated with thenotification alert presented by user interface 114.

User interface 114 includes a single GUI view which presents smallamount information that computing device 100 deems sufficient to alertthe user of the notification data. For example, as shown in FIG. 1,computing device 100 may a reminder of a calendar event (e.g., a movieshowing) as notification data and output a GUI view as part of userinterface 114 that shows the title/name, time, and location of thecalendar event.

As used herein, the term “GUI view” is meant to describe a discretescreen, layer, page, window, or portion of related content of a GUI. Insome examples, only one GUI view may be displayed at a time. In otherexamples, more than one GUI view may be displayed at a time. A groupingof GUI views may represent a single GUI.

In contrast to user interface 114, user interface 116 is a richer GUIthat includes several GUI views that each present, in different ways,information obtained from the notification data including in someexample, selectable graphical elements that enable user interaction withthe data. For example, as shown in FIG. 1, computing device 100automatically generate user interface 116 and output GUI views 118A-118N(collectively GUI views 118) as part of user interface 116 that eachshow different information about the calendar event. GUI view 118A issimilar to the GUI view of user interface 114 showing high-levelinformation about the calendar event (e.g., title/name, notificationicon, time, location, etc.). GUI view 118B includes a graphical imageattachment representing a Matrix barcode or barcode from an electronicticket associated with the calendar event. GUI view 118C includes moredetailed information about the event (e.g., message, body, content,ratings, reviews, duration, etc.) and GUI view 118D includes even moredetailed information about the event (e.g., message history, additionalbody, additional content, a description or summary).

Notification module 122 may perform functions associated with receiving,managing, and otherwise handling at least a portion of the notificationdata generated and/or received by platforms, applications, and servicesexecuting at, or in communication with, computing device 100. As usedthroughout the disclosure, the term “notification data” is used todescribe various types of information that may indicate the occurrenceof an event associated with various platforms, applications, andservices executing within, or in communication with, an executionenvironment at one or more computing devices, such as computing device100. For example, notification data may include, but is not limited to,information specifying an event such as: the receipt of a communicationmessage (e.g., e-mail, instant message, text message, etc.) by amessaging account associated with computing device 100, the receipt ofinformation by a social networking account associated with computingdevice 100, a reminder of a calendar event (meetings, appointments,etc.) associated with a calendar account of computer device 100,information generated and/or received by a third-party applicationexecuting at or in communication with computing device 100, thetransmittal and/or receipt of inter-component communications between twoor more components of platforms, applications, and/or services executingat computing device 100, or any other information that may interest auser.

Notification module 122 may process notification data as computingdevice 100 receives the notification data from any device, server, orservice, executing at or in communication with computing device 100 anddistribute portions of the notification data to other modules,applications, and/or services executing at or in communication withcomputing device 100. For example, notification module 122 may receivenotification data from a mobile phone that is paired via a networkconnection with computing device 100. The notification data may includeinformation about an event (e.g., a reminder about a movie showing thata user of computing device 100 has purchased tickets to) from a calendarapplication executing at the mobile phone. In response to receiving thenotification data, notification module 122 may send at least a portionof the notification data to UI module 120 along with an instruction forpresenting, at PSD 112, a graphical indication or alert based on thenotification data.

In some examples, notification module 122 may implement a notificationqueue for processing notification data. Notification module 122 mayplace received notification data into the notification queue in aparticular order (e.g., first-in-first-out, last-in-first-out, etc.).Notification module 122 may give other applications, services, modules,or platforms executing at computing device 100 access to thenotification queue. In this way, notification module 122 need onlyprovide a location in memory to the notification queue and the otherapplications, services, platforms, or modules executing at computingdevice 100 can access incoming notification data directly. For example,UI module 120 may receive a pointer from notification client module 122indicating the location of notification queue in a memory of computingdevice 100. UI module 120 may retrieve and analyze the notification datain the notification queue to create one or more GUI views of userinterfaces 114 or 116 of FIG. 1.

In general, UI module 120 may manage the interactions with, and controlthe display of, user interfaces (e.g., user interfaces 114 and 116)being presented at PSD 112. For example, UI module 120 may receiveinformation (e.g., notification data) and/or instructions from varioussources (e.g., one or more system platforms, operating systems,applications, modules, and/or services executing at or in communicationwith computing device 100) for generating user interfaces 114 and 116and in response, output instructions and information to PSD 112 to causePSD 112 to display user interfaces 114 and 116. In addition, UI module120 may receive information from PSD 112 in response to inputs detectedby PSD 112 at locations at which user interfaces 114 and 116 aredisplayed; and disseminate information about the inputs to variousdestinations (e.g., one or more system platforms, operating systems,applications, modules, and/or services executing at or in communicationwith computing device 100) for interpreting the input and for causingcomputing device 100 to perform a function. In some examples, UI module120 may receive explicit instructions from a source for generating auser interface that is displayed by PSD 112. However, in other cases, UImodule 120 may receive other information (e.g., notification data) andautomatically generate a user interface that is displayed by PSD 112based on the other information.

UI module 120 may automatically generate, from notification dataobtained by notification module 122, a GUI that functions and appearssimilar to a GUI (e.g., for conveying and facilitating user interactionswith the notification data) that might be generated by an applicationexecuting at computing device 100 if such an application actuallyexisted. UI module 120 may analyze notification data upon its receiptand automatically generate, in real-time, a customized GUI that UImodule 120 has specifically tailored for conveying and facilitating userinteractions with the notification data. For example, upon receipt ofnotification data, UI module 120 may select, from amongst severaldifferent “template GUI views”, a particular template GUI view to usefor presenting a portion of the notification data. UI module 120 maychoose several GUI views if necessary (e.g., one view for each differentportion of notification data) and populate each selected, template GUIview with a respective portion of the notification data. UI module 120may then group and cause PSD 112 to present the populated template GUIviews as a cohesive application-style, customized GUI.

Subsequently, when new notification data is received, UI module 120 maypresent the old customized GUI, and again, automatically generate, inreal-time, a new customized GUI that the device has yet againspecifically tailored for conveying and facilitating user interactionswith the new notification data. In this way, UI module 120 may enablecomputing device 100 to automatically provide tailored user experiencesfor interacting with notification data received by computing device 100,without requiring computing device 100 to execute multiple applicationsthat other devices may use to convey similar information.

In the example illustrated in FIG. 1, notification module 122 ofcomputing device 100 may receive notification data that includesinformation about a movie showing for which a user of computing device100 had earlier purchased an electronic ticket. Notification module 122may store the notification data (e.g., in a notification queue) and sendan alert or other information to UI module 120 that alerts UI module 120to the receipt of the new notification data. UI module 120 may format aportion of the notification data into a graphical alert and cause PSD112 to present the graphical alert as user interface 114.

Computing device 100 may select, based on the notification data, atemplate GUI view from a plurality of template GUI views. For example,UI module 120 may dissect the notification data into one or more contentpages, content layers, or portions of notification data and select aparticular template GUI view that is best suited for presenting eachportion of notification data. UI module 120 may rely on a flag or otheridentifier within the notification data itself to determine a contenttype associated with each portion of notification data. In someexamples, UI module 120 may analyze the notification data (e.g., parsetext, identify elements, identify images, determine attributes, etc.)and select an appropriate template GUI view to present the contentportion accordingly.

Computing device 100 may automatically generate, from a portion of thenotification data, an application GUI view that includes the portion ofthe notification data included within one or more fields of the templateGUI view. For example, UI module 120 may identify from the notificationdata, a summary portion of the notification data including anotification icon, a title/name, and other information and generate GUIview 118A to be a graphical representation of the information containedin the summary portion. UI module 120 may populate the title/name fieldof a summary template GUI view with the title/name contained in thesummary portion of the notification data. UI module 120 may populate thenotification icon field of the summary template GUI view with thenotification icon in the summary portion of the notification data. UImodule 120 may populate the time and location fields of the summarytemplate GUI view with the time and location information contained inthe summary portion of the notification data.

UI module 120 may repeat the above steps, selecting a template GUI viewand populating the template GUI view for each portion of notificationdata. For example, UI module 120 may populate an image template GUI viewwith an image from the notification data to generate GUI view 118B. UImodule 120 may populate a message or body template GUI view with one ormore message or content portions from the notification data and generateGUI views 118C-118N that each includes a graphical representation theinformation contained in each of the one or more message or contentportions.

After UI module 120 causes PSD 112 to present user interface 114, a userof computing device 100 may provide touch input 104 at a location of PSD112 at which user interface 114 is displayed. UI module 120 mayinterpret touch input 104 as a command for computing device 100 to showmore information about the movie showing.

Computing device 100 may output, for display, the application GUI view.For example, after populating all the fields of the different templateGUI views with portions of notification data, UI module 120 may renderthe multiple template GUI views and send instructions to PSD 112 topresent the rendered GUI views as user interface 116. UI module 120 maypackage the rendered GUI views during rendering such that when PSD 112presents the rendered GUI views, the rendered GUI views are output fordisplay with the appearance of being part of a single, stand-aloneapplication that is specific to the notification data. For example, asshown in FIG. 1, UI module 120 may package the populated GUI templatesassociated with each of GUI views 118 and cause PSD 112 to display GUIviews 118 as a single user interface 116. A user may provide gestureinput 104B (e.g., a sliding touch input) to cause PSD 112 to scroll fromone GUI view 118 to the next GUI view 118.

In this way, computing device 100 may automatically provide tailoreduser experiences for interacting with notification data without havingto execute multiple different on-device applications to convey similarinformation. By relying on template GUI views that have been preloadedto computing device 100 and comport with accepted standards forappealing GUI design, computing device 100 may improve user engagementwith notification data while simultaneously reducing developer time andresources to obtain similar user engagement. By not having to storeinstructions for, and launching individual applications to provideapplication specific GUIs, computing device 100 may conserve memoryresources, execute faster, perform fewer operations, and require lessinfrastructure to provide a GUI experience that previously requiredon-device storage and execution of multiple custom or feature specificapplications.

FIG. 2 is a block diagram illustrating an example computing deviceconfigured to automatically generate an application GUI view based on aportion of notification data, in accordance with one or more aspects ofthe present disclosure. Computing device 200 of FIG. 2 is describedbelow as an example of computing device 100 of FIG. 1. FIG. 2illustrates only one particular example of computing device 200, andmany other examples of computing device 200 may be used in otherinstances and may include a subset of the components included in examplecomputing device 200 or may include additional components not shown inFIG. 2.

As shown in the example of FIG. 2, computing device 200 includes PSD212, one or more processors 240, one or more communication units 242,one or more input components 244, one or more output components 246, andone or more storage components 248. Presence-sensitive display 212includes display component 202 and presence-sensitive input component204. Storage components 248 of computing device 200 include operatingplatform 228 (also referred to as operating system 228), UI module 220,notification module 222, template views data store 224 (referred tosimply as “template views 224”), and notification queue data store 226(referred to simply as “notification queue 226”). Communication channels250 may interconnect each of the components 212, 240, 242, 244, 246, and248 for inter-component communications (physically, communicatively,and/or operatively). In some examples, communication channels 250 mayinclude a system bus, a network connection, an inter-processcommunication data structure, or any other method for communicatingdata.

One or more communication units 242 of computing device 200 maycommunicate with external devices via one or more wired and/or wirelessnetworks by transmitting and/or receiving network signals on the one ormore networks. Examples of communication units 242 include a networkinterface card (e.g. such as an Ethernet card), an optical transceiver,a radio frequency transceiver, a GPS receiver, or any other type ofdevice that can send and/or receive information. Other examples ofcommunication units 242 may include short wave radios, cellular dataradios, wireless network radios, as well as universal serial bus (USB)controllers. Computing device 200 may receive, via communication units242, notification data being broadcast or transmitted via a network fromother computing devices communicating on the network. For example,computing device 200 may receive, using communication unit 242,notification data from an application executing at a different computingdevice that shares a communication link (e.g., is communicating on thesame network as) computing device 200. Computing device 200 may be awearable device or an automotive device and the “different” computingdevice from which the notification data is received may be a mobiletelephone, laptop computer, tablet computing device, or any and allother computing devices, servers, and computing systems.

One or more input components 244 of computing device 200 may receiveinput. Examples of input are tactile, audio, and video input. Inputcomponents 244 of computing device 200, in one example, includes apresence-sensitive input device (e.g., a touch sensitive screen, a PSD),mouse, keyboard, voice responsive system, video camera, microphone orany other type of device for detecting input from a human or machine. Insome examples, input components 244 may include one or more sensorcomponents one or more location sensors (GPS components, Wi-Ficomponents, cellular components), one or more temperature sensors, oneor more movement sensors (e.g., accelerometers, gyros), one or morepressure sensors (e.g., barometer), one or more ambient light sensors,and one or more other sensors (e.g., microphone, camera, infraredproximity sensor, hygrometer, and the like). Other sensors may include aheart rate sensor, magnetometer, glucose sensor, hygrometer sensor,olfactory sensor, compass sensor, step counter sensor, to name a fewother non-limiting examples.

One or more output components 246 of computing device 200 may generateoutput. Examples of output are tactile, audio, and video output. Outputcomponents 246 of computing device 200, in one example, includes a PSD,sound card, video graphics adapter card, speaker, cathode ray tube (CRT)monitor, liquid crystal display (LCD), or any other type of device forgenerating output to a human or machine.

PSD 212 of computing device 200 is an input and output device ofcomputing device 200 and may be similar to PSD 112 of computing device100. PSD 212 includes display component 202 and presence-sensitive inputcomponent 204. Display component 202 may be a screen at whichinformation is displayed by PSD 212 and presence-sensitive inputcomponent 204 may be a touch or capacitive sensor configured to detectan object at and/or near display component 202. As one example range,presence-sensitive input component 204 may detect an object, such as afinger or stylus that is within two inches or less of display component202. Presence-sensitive input component 204 may determine a location(e.g., an [x, y] coordinate) of display component 202 at which theobject was detected. In another example range, presence-sensitive inputcomponent 204 may detect an object six inches or less from displaycomponent 202 and other ranges are also possible. Presence-sensitiveinput component 204 may determine the location of display component 202selected by a user's finger using capacitive, inductive, and/or opticalrecognition techniques. In some examples, presence-sensitive inputcomponent 204 also provides output to a user using tactile, audio, orvideo stimuli as described with respect to display component 202. In theexample of FIG. 2, PSD 212 may present a user interface (such as userinterface 114 or user interface 116 of FIG. 1).

While illustrated as an internal component of computing device 200, PSD212 may also represent an external component that shares a data pathwith computing device 200 for transmitting and/or receiving input andoutput. For instance, in one example, PSD 212 represents a built-incomponent of computing device 200 located within and physicallyconnected to the external packaging of computing device 200 (e.g., ascreen on a mobile phone or a screen on a computerized watch). Inanother example, PSD 212 represents an external component of computingdevice 200 located outside and physically separated from the packagingor housing of computing device 200 (e.g., a monitor, a projector, etc.that shares a wired and/or wireless data path with computing device200).

PSD 212 of computing device 200 may detect two-dimensional and/orthree-dimensional gestures as input from a user of computing device 200.For instance, a sensor of PSD 212 may detect a user's movement (e.g.,moving a hand, an arm, a pen, a stylus, etc.) within a thresholddistance of the sensor of PSD 212. PSD 212 may determine a two or threedimensional vector representation of the movement and correlate thevector representation to a gesture input (e.g., a hand-wave, a pinch, aclap, a pen stroke, etc.) that has multiple dimensions. In other words,PSD 212 can detect a multi-dimension gesture without requiring the userto gesture at or near a screen or surface at which PSD 212 outputsinformation for display. Instead, PSD 212 can detect a multi-dimensionalgesture performed at or near a sensor which may or may not be locatednear the screen or surface at which PSD 212 outputs information fordisplay.

One or more processors 240 may implement functionality and/or executeinstructions associated with computing device 200. Examples ofprocessors 240 include application processors, display controllers,auxiliary processors, one or more sensor hubs, and any other hardwareconfigure to function as a processor, a processing unit, or a processingdevice. Operating platform 228 and modules 220 and 222 may be operableby processors 240 to perform various actions, operations, or functionsof computing device 200. For example, processors 240 of computing device200 may retrieve and execute instructions stored by storage components248 that cause processors 240 to perform the operations of operatingplatform 228 and modules 220 and 222. The instructions, when executed byprocessors 240, may cause computing device 200 to store informationwithin storage components 248.

One or more storage components 248 within computing device 200 may storeinformation for processing during operation of computing device 200(e.g., computing device 200 may store data accessed by operatingplatform 228 and modules 220 and 222 during execution at computingdevice 200). In some examples, storage component 248 is a temporarymemory, meaning that a primary purpose of storage component 248 is notlong-term storage. Storage components 248 on computing device 200 may beconfigured for short-term storage of information as volatile memory andtherefore not retain stored contents if powered off. Examples ofvolatile memories include random access memories (RAM), dynamic randomaccess memories (DRAM), static random access memories (SRAM), and otherforms of volatile memories known in the art.

Storage components 248, in some examples, also include one or morecomputer-readable storage media. Storage components 248 in some examplesinclude one or more non-transitory computer-readable storage mediums.Storage components 248 may be configured to store larger amounts ofinformation than typically stored by volatile memory. Storage components248 may further be configured for long-term storage of information asnon-volatile memory space and retain information after power on/offcycles. Examples of non-volatile memories include magnetic hard discs,optical discs, floppy discs, flash memories, or forms of electricallyprogrammable memories (EPROM) or electrically erasable and programmable(EEPROM) memories. Storage components 248 may store program instructionsand/or information (e.g., data) associated with operating platform 228and modules 220 and 222 as well as template views data store 224 andnotification queue data store 226. Storage components 248 may include amemory configured to store data or other information associated withoperating platform 228 and modules 220 and 222 as well as template viewsdata store 224 and notification queue data store 226.

Operating platform 228 manages computing resources of computing device200. Also referred to as an operating system, operating platform 228manages the interaction between modules 220 and 222 and components 202,204, 212, 240, 242, 244, 246, and 248. For example, operating platform228 may perform time-sharing or scheduling of tasks to ensure that eachof modules 220 and 222 are allocated a percentage of processor time ofprocessors 240 or may efficiently access the information stored atstorage component 248, or any other of components 202, 204, 212, 242,244, and 246. In other words, operating platform 228 may act as anintermediary between software, hardware, and firmware, executing at oraccessible to computing device 200. In some examples, operating platform228 is the only executable application of computing device 200 thatgenerates, receives, manages, or otherwise handles notification data andthe presentation thereof. For example, rather than rely on multiple,application specific programs or applications, operating platform 228 ofcomputing device 200, using UI module 220 and notification module 222,may control all operations and functions related to notifications andthe presentation of information associated with notification data at PSD212.

Notification module 222 may include all functionality of notificationmodule 122 of computing device 110 of FIG. 1 and may perform similaroperations as notification module 222 for receiving, managing, andotherwise handling at least a portion of the notification data generatedand/or received by platforms, applications, and services executing at,or in communication with, computing device 200. As shown in FIG. 2,notification module 222 may be part of or associated with operatingplatform 228. For example, notification module 222 may be a sub-module,service, or activity of operating platform 228 as opposed to a separatemodule or application of computing device 200.

Notification module 222 may receive notification data (e.g., asinformation obtained by communication units 242 from a differentcomputing device, as information obtained from an application executingat computing device 200, etc.) and store the notification data atnotification queue 226. Notification module 222 may output portions ofthe notification data it receives to UI module 220 and/or provide accessto UI module 220 to notification queue 226. For example, notificationmodule 222 may share with UI module 220, a memory pointer to a locationof notification queue 226 within storage component 248 and allow UImodule 220 to access the data stored at the location (e.g., toautomatically generate GUI views based on the notification data).

Notification queue 226 represents any suitable storage medium forstoring and buffering notification data. For instance, notificationqueue 226 may be a queue, stack, or type of data structure for bufferingfor organizing notification data as notification module 222 receives thenotification data, over time. UI module 220 may access notificationqueue 226 and generate GUI views based on the notification data storedat notification queue 226. Notification module 222 may performread/write operations for adding information to notification queue 226(e.g., when notification data is received) or removing information fromnotification queue 226 (e.g., when a user provided input to dismiss anotification alert, when UI module 220 cease presenting anauto-generated GUI view associated with the notification data, etc.).

Template views 224 represents any suitable storage medium for storingand information specifying a plurality of “template GUI views” that UImodule 220 relies on to automatically generate notification dataspecific GUIs. Each template GUI view may specify location, size, andattributes of one or more fields of graphical content that whenpopulated with portions of notification data, may be rendered fordisplay (e.g., at PSD 212) as a GUI view. Each template GUI view may bepre-loaded or downloaded during run-time at computing device 200 and mayspecify locations, sizes, and attributes of fields that providegraphical content extracted from notification data. Each template GUIview may be designed according to rules specifying how to layout atypical application GUI, what and where to locate primary and secondaryactions that a user can take from the typical application GUI, where toprovide access to navigation within the typical application GUI, etc.Each field of a template GUI may map to a particular field of anexisting notification data application programming interface (API) suchthat a notification creator (e.g., an application or service executingat or in communication with computing device 200) need not provide anyadditional information beyond the types of information already providedwhen generating notification data, to ensure the notification data canbe mapped to a particular template GUI view. In some examples, anotification creator can however provide additional information (e.g.,images, text content, actions, etc.) beyond the types of informationalready provided when generating notification data, and UI module 220ensures the additional information is mapped to a particular templateGUI view. In this way, the developer of the notification data needs onlyto ensure that the raw or static notification data complies with therequirements of the already existing notification service and computingdevice 200 transforms this static information into an interactiveapplication style user interface.

Each template GUI view stored at template views 224 may be categorizedaccording to notification type or according to notification data type.Examples of notification type include: a message notification type, aticket notification type, and a photo notification type. Other examplenotification types are calendar or event type notifications, remindertype notifications, health data or achievement type notifications, orany other category of notification. Examples of notification data typesinclude: profile picture, notification icon, photo, image, message,body, content, title/name, headline, header, or any other type of aportion of notification data. When computing device 200 receives aparticular type of notification or notification data that has a portionof notification data which is a specific type, UI module 220 can queryor perform a look-up of template views 224 to identify an appropriatetemplate GUI that matches the specific notification or notification datatype.

UI module 220 may include all functionality of UI module 120 ofcomputing device 110 of FIG. 1 and may perform similar operations as UImodule 120 for managing a user interface (e.g., user interface 114) thatcomputing device 200 provides at presence-sensitive display 212 forhandling input from a user. For example, UI module 220 may automaticallygenerate, from notification data obtained by notification module 222, aGUI (e.g., for conveying and facilitating user interactions with thenotification data) that functions and appears similar to a GUI that auser would expect to see when interacting with a dedicated applicationexecuting at computing device 200. As is the case with notificationmodule 222, UI module 220 may be part of or associated with operatingplatform 228. For example, UI module 220 may be a sub-module, service,or activity of operating platform 228 as opposed to a separate module orapplication of computing device 200.

UI module 220 may analyze notification data upon its receipt and storageat notification queue 226 and automatically generate, in real-time, acustomized GUI that UI module 220 has specifically tailored forconveying and facilitating user interactions with the notification data.UI module 220 may analyze the notification data for various types ofcontent, fit or populate the content into one or more template GUI views224, and merge the populated template GUI views into a single GUI thatUI module 220 then causes PSD 212 to output for display. For example, inresponse to receiving notification data, UI module 220 may select, fromamongst template views 224, a particular template GUI view 224 to usefor presenting a portion of the notification data. UI module 220 mayselect a single template GUI views 224, if necessary, for each differentportion of notification data, and populate each selected, template GUIview with a respective portion of the notification data. UI module 220may then group and cause PSD 212 to present the populated template GUIviews as a cohesive application-style, customized GUI.

When selecting a template GUI view from amongst template GUI views 224,UI module 220 may first determine a notification type associated withthe notification data and then query template GUI views 224 for thenotification type. UI module 220 may determine the type of notificationdata based on one or more of a flag associated with the portion ofnotification data, a style identifier associated with the portion ofnotification data, or a type identifier associated with the notificationdata. For example, the notification creator (e.g., the application orservice executing at or remote to computing device 200 that generatedthe notification data) may already populate a flag, a style identifier,or a type identifier associated with the notification data to ensure thenotification data is compatible with an existing notification servicebeing used to send and receive the notification data. In this way, UImodule 220 may determine the type of the notification data forgenerating the GUI view based on a type flag that the originator alreadysets as part of the notification service, and UI module 220 need notrequired the originator of the notification data to provide any moreinformation beyond what normally would be required to comply with thenotification service.

In some examples, UI module 220 may analyze portions of notificationdata and infer a notification type. For example, if notification dataincludes a graphical representation of a barcode or Matrix barcode, UImodule 220 may infer the notification data is a ticket type. Ifnotification data includes text content in a format typical of amessaging conversation, UI module 220 may infer the notification data isa messaging type.

Rather than expending the computing resources that would be required toexecute a stand-alone application to manage a user interface associatedwith notification data, UI module 220 may call on operating platform 228to launch a new activity or system thread to handle the presentation anduser interactions with an auto-generated application GUI view. Saiddifferently, UI module 220 may cause operating platform 228 to create anew system thread or so-called “activity” for each application GUI viewthat UI module 220 causes to be output for display at PSD 212. Eachapplication GUI view may be output for display during execution of thenew system thread.

By launching a new activity or thread instead of executing separatestand-alone application, UI module 220 can cause an auto-generatedapplication GUI view to “launch” or be presented at UID 212 faster thana GUI of a stand-alone application. In addition, by launching newthreads or activities, UI module 220 can cause auto-generatedapplication GUI views to look and operate similar to an application,without all the computing overhead associated with executing anapplication. For instance, by launching a new activity, UI module 220can bypass or forgo retrieving an executable file from memory or fromoff of a disk, running through a boot phase or start-up sequence,requesting and/or reserving space in memory to handle execution of theapplication, or performing any other operation that would typically berequired to execute an application. In addition, by launching GUI viewsas activities or threads of operating platform 228, computing device 200can avoid having to reserve storage space for an executable, orotherwise require a separate application install, to present a GUI forinteracting with notification data. In other words, by launching anapplication GUI view as part of an already existing and executingoperating platform 228, UI module 220 can cause PSD 212 to presentapplication GUI views faster and by relying on less memory and othercomputing resources.

In addition to saving time and resources by forgoing applicationexecutables and instead using activities or system threads to supportauto-generated application GUI views, UI module 220 may also quicklyfree-up computing resources when notifications are dismissed or anapplication GUI view or otherwise no longer needed. For example, aftercausing PSD 212 to present an application GUI view that has beenauto-generated by UI module 220 from notification data, UI module 220may receive a user input to exit the application GUI view. That is, auser may provide a swipe or other gesture at PSD 212 that UI module 220may interpret as being an indication that the user no longer wants toview information about a notification.

Responsive to the user input, UI module 220 may cause operating platform228 to terminate the new system thread that was launched for presentingthe application GUI view, thereby releasing memory, processing cycles,and other computing resources. For example, UI module 220 may causeprocessor 240 to perform an instruction to delete the application GUIview from a memory of computing device 200. In this way, UI module 220need not waste memory or storage (e.g., disk) space retaining specificexecutable code for presenting application hosted GUIs for interactingwith notification data either when the application GUI view is beingpresented, or after presentation of the application GUI view has ceased.Instead, UI module 220 may automatically generate an application GUIview in real-time or near real-time (e.g., at the time that notificationdata is received or is to be presented), launch a new system thread tomanage the user interactions with the application GUI view, and thenkill or terminate the newly launched thread when interactions with theGUI view cease or a user otherwise stops needing the application GUIview. Computing device 200 may be able to operate using a lesser amountof storage space than other devices since computing device 200 may neednot retain executable applications to present application style GUIs forinteracting with notification data.

FIGS. 3A-3D are conceptual diagrams illustrating example application GUIviews automatically generated by an example computing device based on aportion of notification data, in accordance with one or more aspects ofthe present disclosure. FIGS. 3A-3D illustrate user interfaces 314A-314D(collectively, user interfaces 314) and user interfaces 316A-316D(collectively, user interfaces 316). However, many other examples ofgraphical user interfaces may be used in other instances. Each ofgraphical user interfaces 314 and 316 may correspond to a graphical userinterface displayed by computing devices 100 or 200 of FIGS. 1 and 2.FIGS. 3A-3D are described below in the context of computing device 100.

FIG. 3A illustrates an example of user interfaces that may be displayedby computing device 100 in response to receiving a photo typenotification data (e.g., a message notification with a graphical imageor digital photo as a portion of content). Computing device 100 maydisplay user interface 314A as a graphical alert or graphical indicationto the receipt of the photo type notification data. As shown in FIG. 3A,user interface 314A includes a notification icon (e.g., associated withthe sender of the notification data), a title/name (e.g., the user nameof the sender), text content (e.g., body of a brief message accompanyingthe photo data).

After presenting user interface 314A, and either automatically (e.g.,after a brief time out) or as a response to receiving user input at PSD112, computing device 100 may present user interface 316A includingapplication GUI view 318A-1 through application GUI view 318A-5(collectively, “application GUI views 318A”). For example, UI module 120may dissect the photo notification data into multiple portions of dataand select a template GUI view for each portion of data. Then, computingdevice 100 may populate the fields of the selected template GUI viewswith the portions of notification data to generate individualapplication GUI views 318A.

Application GUI view 318A-1 represents a summary view and includes thetitle/name portion of the photo notification data, the brief messageportion, etc. Computing device 100 may display GUI view 318A-1 and thenafter detecting a scrolling input (e.g., a gesture at PSD 112),computing device 100 may present in sequential order, GUI views 318A-2,318A-3, and 318A-4.

Application GUI views 318A-2 and 318A-3 each represent photo views andinclude respective image portions contained within the photo typenotification data. In some examples, computing device 100 may populatethe one or more fields of a template GUI view with the portion of thenotification data after first formatting the portion of the notificationdata to fit a size of a screen of the display component. For example, UImodule 120 may determine a size of PSD 112 and a size of a respectiveimage portion contained within the photo type notification data. Whenautomatically generating GUI views 318A-2 and 318A-3, UI module 120 mayresize the respective image portions to fit the size of PSD 112 by, forexample, stretching, shrinking, or cropping the respective imageportions.

In some examples, the system activity or thread that UI module 220generates for handling the presentation of application GUI views 318Amay also facilitate user interactions with the notification data. Forexample, a user may input a spread gesture at PSD 112 when presentingGUI view 318A-3. In response to the spread gesture, computing device 100may cause PSD 112 to present application GUI view 318A-5 which shows therespective photo portion from GUI view 318A-4 in expanded view.Conversely, in response to a pinch gesture, computing device 100 maycause PSD 112 to present the respective photo portion in a shrunken orreduced view. The system activity or thread that UI module 120 generatesfor handling the presentation of application GUI views 318A may alsorespond to other types of gestures or inputs (e.g., voice, etc.) forenabling user interaction with the notification data.

Application GUI view 318A-4 represents an action view and includes twoor more selectable elements for initiating an action associated with thenotification data. Computing device 100 may determine, based on thenotification data, an action associated with the portion of thenotification data, and insert a selectable element associated with theaction into the application GUI view. For example, UI module 120 maycause GUI view 318A-4 to include a “share” action for sending the phototype notification data to a computing device, server, computing system,of another user, and an “open on phone” action for sending the phototype notification data for presentation at a different computing deviceof the user. UI module 120 may determine different actions for othertypes of notification data and insert selectable elements for initiatingthe action within automatically generated GUI views being presented atPSD 112.

FIG. 3B illustrates an example of user interfaces that may be displayedby computing device 100 in response to receiving a calendar or remindertype notification data (e.g., a calendar notification alerting a user toa scheduled meeting, appointment, or event—in this case, a happy hourwith co-workers of the user). Computing device 100 may display userinterface 314B as a graphical alert or graphical indication to thereceipt of the calendar type notification data. As shown in FIG. 3B, andsimilar to user interface 314A, user interface 314B includes anotification icon, a title/name, and text content (e.g., locationinformation from the calendar data).

After presenting user interface 314B, computing device 100 may presentuser interface 316B including application GUI view 318B-1 throughapplication GUI view 318B-5 (collectively application GUI views 318B).For example, UI module 120 may identify multiple portions of calendarnotification data that are suitable for a separate application GUI viewand select a template GUI view for each portion of data. Computingdevice 100 may populate the fields of the selected template GUI viewswith the portions of notification data to generate individualapplication GUI views 318B.

Application GUI view 318B-1 represents a summary view and includes thetitle/name portion of the photo notification data, a text portion, timeand date information, etc. Computing device 100 may display any of GUIview 318B and then after detecting a scrolling input (e.g., a swipe upgesture at PSD 112), computing device 100 may present in sequentialorder, GUI views 318B-2, 318B-3, and 318B-4.

Application GUI views 318B-2 represents an address view showing theentire location or address of the calendar event. Application GUI view318B-4 represents a participant or invitee view showing all the guestsinvited to the calendar event, status (e.g., whether each accepted ordeclined), as well as respective names of each invited guest.

Application GUI view 318B-3 represents a combination map and action viewincluding a graphical image of a map of the location of the event. Inresponse to detecting a user input at a location of PSD 112 at whichapplication GUI view 318B-3 is displayed, the system activity drivinguser interface 316B may begin providing navigational directions to thelocation of the event and presenting the navigation directions as GUIview 318B-5.

FIG. 3C illustrates another example of user interfaces that may bedisplayed by computing device 100 in response to receiving a calendar orreminder type notification data (e.g., a calendar notification alertinga user to a scheduled meeting, appointment, or event—in this case, agroup run with friends of the user). Computing device 100 may displayuser interface 314C as a graphical alert or graphical indication to thereceipt of the calendar type notification data. As shown in FIG. 3C, andsimilar to user interface 314A and 314B, user interface 314C includes anotification icon, a title/name, and text content (e.g., timeinformation from the calendar data). In the example of FIG. 3C, thenotification icon is a countdown timer indicating the amount of timeremaining until the start of the event.

After presenting user interface 314C, computing device 100 may presentuser interface 316C including application GUI view 318C-1 throughapplication GUI view 318C-3 (collectively application GUI views 318C).For example, UI module 120 may identify multiple portions of calendarnotification data that are suitable for a separate application GUI viewand select a template GUI view for each portion of data. Computingdevice 100 may populate the fields of the selected template GUI viewswith the portions of notification data to generate individualapplication GUI views 318C.

Application GUI view 318C-1 represents a summary view and includes thetitle/name portion of the photo notification data, a text portion, timeinformation, etc. Computing device 100 may display any of GUI view 318Cand then after detecting a scrolling input (e.g., a swipe up gesture atPSD 112), computing device 100 may present in sequential order, GUIviews 318C-2 and 318C-3. Application GUI view 318C-2 represents aparticipant or invitee view showing all the guests invited to thecalendar event, as well as respective names of each invited guest.

Application GUI view 318C-3 represents a hidden action application GUIview and application GUI view 318C-4 represents an unhidden actionapplication GUI view. UI module 120 may determine one or more secondaryactions associated with a portion of notification data and insert arespective selectable element associated with each of the one or moresecondary actions into a location of application GUI view 318C-4. Inresponse to detecting a user input at a location of PSD 112 at whichapplication GUI view 318C-3 is displayed, the system activity managinginteractions with user interface 316C may cause PSD 112 to present GUIview 318C-4 which is an automatically generated application GUI viewthat includes a group of selectable elements associated with actions ofthe notification data.

An action of notification data may be an action or function that couldbe performed on the notification data. A secondary action is one thatmay be performed on the notification data which is not frequently usedenough to warrant being displayed as a primary action. Computing device100 may cause “primary actions” associated with notification data (e.g.,frequently performed actions or functions associated with thenotification data) to be presented as prominent features in one of theinitial GUI views being displayed as part of a user interface andcomputing device 100 may cause “secondary actions” to be displayed in ahidden GUI view until user input is detected for un-hiding the secondaryactions.

FIG. 3D illustrates an example of user interfaces that may be displayedby computing device 100 in response to receiving a message typenotification data (e.g., a message notification alerting a user to amessage received by a messaging account of computing device 100).Computing device 100 may display user interface 314D as a graphicalalert or graphical indication to the receipt of the message typenotification data. As shown in FIG. 3D, and similar to user interfaces314A-314C, user interface 314D includes a notification icon, atitle/name, and text content (e.g., a body of the message).

After presenting user interface 314D, computing device 100 may presentuser interface 316D including application GUI view 318D-1 throughapplication GUI view 318D-4 (collectively application GUI views 318D).For example, UI module 120 may identify multiple portions of messagenotification data that are suitable for a separate application GUI viewand select a template GUI view for each portion of data. Computingdevice 100 may populate the fields of the selected template GUI viewswith the portions of notification data to generate individualapplication GUI views 318D.

Computing device 100 may determine, based on the notification data, aprimary action associated with the portion of the notification data, andinsert a selectable element associated with the primary action into alocation of the application GUI view that is visible when theapplication GUI view initially replaces the graphical alert. Forexample, UI module 120 may cause PSD 112 to present application GUI view318D-2 in response to detecting the input at user interface 314D.Application GUI view 318D-1 represents a summary view and includes bodyof the message received with the notification data. Included withinapplication GUI view 318D-2 is graphical element for invoking a primaryaction associated with message type notification data, e.g., a replyaction. In this way, UI module 120 may cause user interface 316D todisplay GUI view 318D-2 first with a selectable element for invoking amost likely action to be taken against the notification data.

Computing device 100 may sometimes receive notification data that hasadditional information or a pointer to a location either internal orexternal to computing device 100 which stores the additionalinformation. UI module 120 may use the additional information providedby notification sender to further enhance the auto-generated applicationGUI view. For example, the additional information associated with amessage type notification may include a message history.

Application GUI view 318D-1 represents a message history view showingall the recent messages in the conversation between the sender of themessage type notification data and the user of computing device 100.Responsive to determining that the notification data is a messagingnotification type, UI module 120 may insert, within a message historyfield of the application GUI view 318D-1, a portion of a recentconversation between a user of computing device 100 and a sender of amessage associated with the notification data and output, for display aspart of the application GUI view 318D-1, the portion of the recentconversation. A user of computing device 100, before replying, mayprovide a scroll down input to move GUI view 318D-2 out of view and moveGUI view 318D-1 into view at PSD 112 so the user can recall the previousmessage content.

Application GUI view 318D-3 represents an auto-generated view showingseveral recommended responses or replies to the message of thenotification data. In other words, UI module 120 may determine based onthe message associated with the notification data, one or more replymessages (e.g., using one or more linguistic rules or machine learningtechniques), cause PSD 112 to output, for display as one or moreselectable elements of application GUI view 318D-3, the one or morereply messages. For example, UI module 120 may input the messagereceived from notification data into a rules based system and receive asoutput one or more recommended reply messages. In some examples, UImodule 120 may determine the one or more reply messages further based onthe portion of a recent conversation. In other words, instead of alwaysshowing the exact same list of roughly a dozen touchable responses,computing device 100 may intelligently show responses that make sensebased on the recent messages in the chat. For example, UI module 120 mayinput the message received from notification data as well as at leastsome of the additional information about recent messages into the rulesbased system and receive as output one or more recommended replymessages that are particularly relevant given the conversation history.

Lastly, application GUI view 318D-4 represents a secondary action viewand includes one or more selectable elements for initiating an actionassociated with the notification data. Computing device 100 maydetermine, based on the notification data, an action associated with theportion of the notification data, and insert a selectable elementassociated with the action into the application GUI view. For example,UI module 120 may cause GUI view 318D-4 to include a “voice” action forenabling voice input or voice responses to the message of thenotification data and a “block app” action for preventing future displayof message based GUI views or specifically, block or otherwise preventGUI views or notification alerts to messages from the sender of thenotification data.

FIG. 4 is a flowchart illustrating example operations of an examplecomputing device configured to automatically generate an application GUIview based on a portion of notification data, in accordance with one ormore aspects of the present disclosure. The operations of FIG. 4 may beperformed by one or more processors of a computing device, such ascomputing devices 100 of FIG. 1 or computing device 200 of FIG. 2. Forpurposes of illustration only, FIG. 4 is described below within thecontext of computing device 100 of FIG. 1.

In operation, computing device 100 may receive notification data (400).For example, notification module 122 may receive an indication ofnotification data from an application or service executing at oraccessible to computing device 100. In response to detecting newnotification data being added to the notification queue managed bynotification module 122, UI module 120 may generate a graphical alertbased on the notification data and automatically generate an applicationstyle GUI based on the notification data.

Computing device 100 may select a template GUI view based on thenotification data (410). For example, UI module 120 may identifyindividual portions of notification data that have information that maypopulate one or more fields of a template GUI view. UI module 120 maymap the portions of notification data to different template GUI views.For instance, if the notification data is a calendar or e-mailnotification with a Matrix barcode for an electronic ticket, UI module120 may select a QR template GUI view.

Computing device 100 may automatically generate an application GUI viewthat includes a portion of notification data included within one or morefields of the template GUI view (420). For example, UI module 120 maypopulate the QR template GUI view with a graphical image of the QR codethat is contained in the notification. UI module 120 may format the QRcode image as UI module 120 populates the QR field of the template GUIview so when displayed at PSD 112, the QR code is clearly visible.

Computing device 100 may determine whether the notification dataincludes more portions of data (430). In response to determining morethan one portion of data (430, YES), computing device 100 may select,based on the notification data, a second template GUI view from theplurality of template GUI views. For instance, being that thenotification data is a calendar or e-mail notification with a Matrixbarcode for an electronic ticket, UI module 120 may select summarytemplate GUI view. UI module 120 may automatically generate, from theone or more second portions of notification data, a second applicationGUI view that includes the one or more second portions of notificationdata included within one or more fields of the second template GUI view.For example, UI module 120 may populate the summary template GUI viewwith content or information about the event associated with theelectronic ticket.

In response to determining that there are not more portions of data(430, NO), computing device 100 may output, for display, as a singleinteractive GUI, the second application GUI view in addition to thefirst application GUI view. For example, UI module 120 may package thegenerated GUI views into a single rendering, launch a system activity tomanage the interactions with the GUI views, and send instructions to PSD112 to present the single rendering for display.

In some examples, responsive to receiving second notification data,computing device 100 may replace, the first application GUI view with asecond automatically generated application GUI view that is generatedfrom the second notification data. In other words, UI module 120 may inreal-time, replace a GUI view being displayed for interacting withprevious notification data with a GUI view for facilitating interactionswith the new notification data. UI module 120 may terminate or “kill”the system thread managing the previous GUI view and launch a new systemthread to manage the new GUI view. UI module 120 may repeatedly launchand cease activity threads as new notification data is received to allowa user to easily and quickly interact with the new notification data.

Clause 1. A method comprising: receiving, by a computing device,notification data; selecting, by the computing device, based on thenotification data, a template graphical user interface (GUI) view from aplurality of template GUI views; automatically generating, by thecomputing device, from a portion of the notification data, anapplication GUI view that includes the portion of the notification dataincluded within one or more fields of the template GUI view; andoutputting, by the computing device, for display, the application GUIview.

Clause 2. The method of clause 1, wherein: the portion of notificationdata is a first portion of notification data; the template GUI view is afirst template GUI view; the application GUI view is a first applicationGUI view; and the notification data includes one or more second portionsof notification data in addition to the first portion of notificationdata, the method further comprising: selecting, by the computing device,based on the notification data, a second template GUI view from theplurality of template GUI views; automatically generating, by thecomputing device, from the one or more second portions of notificationdata, a second application GUI view that includes the one or more secondportions of notification data included within one or more fields of thesecond template GUI view; and outputting, by the computing device, fordisplay, as a single interactive GUI, the second application GUI view inaddition to the first application GUI view.

Clause 3. The method of any one of clauses 1-2, wherein the notificationdata is first notification data and the application GUI view is a firstapplication GUI view, the method further comprising: responsive toreceiving second notification data, replacing, by the computing device,the first application GUI view with a second application GUI view thatis automatically generated from the second notification data.

Clause 4. The method of any one of clauses 1-3, further comprising:outputting, by the computing device, for display, a system GUI of anoperating system, wherein application GUI view is output for display aspart of the system GUI.

Clause 5. The method of clause 4, wherein automatically generating theapplication GUI view further comprises executing, by the operatingsystem, a new system thread, wherein the application GUI view is outputfor display as part of the system GUI during execution of the new systemthread.

Clause 6. The method of clause 5, further comprising: receiving, by thecomputing device, a user input to exit the application GUI view; andresponsive to the user input, terminating, by the computing device, thenew system thread.

Clause 7. The method of clause 6, further comprising: further responsiveto the user input, deleting, by the computing device, from memory, theapplication GUI view.

Clause 8. The method of any one of clauses 1-7, further comprising:determining, a notification type associated with the notification data,wherein the template GUI view is selected based on the notificationtype.

Clause 9. The method of clause 8, wherein the notification type isdetermined from at least one of: a flag associated with the portion ofnotification data; a style identifier associated with the portion ofnotification data; or a type identifier associated with the notificationdata.

Clause 10. The method of any one of clauses 8 or 9, wherein thenotification type is at least one of: a message notification type; aticket notification type; or a photo notification type.

Clause 11. A computing device comprising: a display component configuredto display information; an input component configured to receive userinput; at least one processor; a memory comprising instructions that,when executed, cause the at least one processor to: receive notificationdata; select, based on the notification data, a template graphical userinterface (GUI) view from a plurality of template GUI views; andautomatically generate, from a portion of the notification data, anapplication GUI view that includes the portion of the notification dataincluded within one or more fields of the template GUI view; output, fordisplay, using the display component, a graphical alert that thenotification data was received; receive, via the input component, anindication of user input associated with the graphical alert; andresponsive to receiving indication of the user input, replace thegraphical alert with the application GUI view.

Clause 12. The computing device of clause 11, wherein the computingdevice is a first computing device and the notification data is receivedfrom an application executing at a second computing device.

Clause 13. The computing device of clause 12, wherein the firstcomputing device is a wearable device or an automotive device and thesecond computing device is a mobile telephone, laptop computer, ortablet computing device.

Clause 14. The computing device of any one of clauses 11-13, wherein theinstructions, when executed, cause the at least one processor toautomatically generate, the application GUI view by at least: populatingthe one or more fields with the portion of the notification data afterformatting the portion of the notification data to fit a size of ascreen of the display component.

Clause 15. The computing device of any one of clauses 11-14, wherein theinstructions, when executed, cause the at least one processor toautomatically generate the application GUI view by at least:determining, by the computing device, based on the notification data, aprimary action associated with the portion of the notification data; andinserting, by the computing device, a selectable element associated withthe primary action into a location of the application GUI view that isvisible when the application GUI view initially replaces the graphicalalert.

Clause 16. The computing device of any one of clauses 11-15, wherein theinstructions, when executed, further cause the at least one processor toautomatically generate the application GUI view by at least:determining, by the computing device, based on the notification data,one or more secondary actions associated with the portion of thenotification data; and inserting, by the computing device, a respectiveselectable element associated with each of the one or more secondaryactions into a location of the application GUI view that requires ascrolling input before becoming visible when the application GUI viewinitially replaces the graphical alert.

Clause 17. A computer-readable storage medium comprising instructionsthat, when executed, cause at least one processor of a computing deviceto: receive notification data; select, based on the notification data, atemplate graphical user interface (GUI) view from a plurality oftemplate GUI views; automatically generate, from a portion of thenotification data, an application GUI view that includes the portion ofthe notification data included within one or more fields of the templateGUI view; and output, for display, the application GUI view.

Clause 18. The computer-readable storage medium of clause 17, whereinthe instructions, when executed, cause the at least one processor of thecomputing device to automatically generate the application GUI view byat least: responsive to determining that the notification data is amessaging notification type, inserting, within a message history fieldof the application GUI view, a portion of a recent conversation betweena user of the computing device and a sender of a message associated withthe notification data; and outputting, for display as part of theapplication GUI view, the portion of the recent conversation.

Clause 19. The computer-readable storage medium of clause 18, whereinthe instructions, when executed, further cause the at least oneprocessor of the computing device to automatically generate theapplication GUI view by at least: determining, based on the messageassociated with the notification data, one or more reply messages; andoutputting, for display as one or more selectable elements of theapplication GUI view, the one or more reply messages.

Clause 20. The computer-readable storage medium of any one of clauses18-19, wherein the instructions, when executed, further cause the atleast one processor of the computing device to determine the one or morereply messages further based on the portion of a recent conversation.

Clause 21. A system comprising means for performing any one of themethods of clauses 1-10.

Clause 21. The computer-readable storage medium of clause 17, whereinthe instructions, when executed, further cause the at least oneprocessor of the computing device to perform any one of the methods ofclauses 1-10.

Clause 22. The computing device of clause 11, wherein the instructions,when executed, further cause the at least one processor to perform anyone of the methods of clauses 1-10.

In one or more examples, the functions described may be implemented inhardware, software, firmware, or any combination thereof. If implementedin software, the functions may be stored on or transmitted over, as oneor more instructions or code, a computer-readable medium and executed bya hardware-based processing unit. Computer-readable media may includecomputer-readable storage media, which corresponds to a tangible mediumsuch as data storage media, or communication media including any mediumthat facilitates transfer of a computer program from one place toanother, e.g., according to a communication protocol. In this manner,computer-readable media generally may correspond to (1) tangiblecomputer-readable storage media, which is non-transitory or (2) acommunication medium such as a signal or carrier wave. Data storagemedia may be any available media that can be accessed by one or morecomputers or one or more processors to retrieve instructions, codeand/or data structures for implementation of the techniques described inthis disclosure. A computer program product may include acomputer-readable medium.

By way of example, and not limitation, such computer-readable storagemedia can comprise RAM, ROM, EEPROM, CD-ROM or other optical diskstorage, magnetic disk storage, or other magnetic storage components,flash memory, or any other medium that can be used to store desiredprogram code in the form of instructions or data structures and that canbe accessed by a computer. Also, any connection is properly termed acomputer-readable medium. For example, if instructions are transmittedfrom a website, server, or other remote source using a coaxial cable,fiber optic cable, twisted pair, digital subscriber line (DSL), orwireless technologies such as infrared, radio, and microwave, then thecoaxial cable, fiber optic cable, twisted pair, DSL, or wirelesstechnologies such as infrared, radio, and microwave are included in thedefinition of medium. It should be understood, however, thatcomputer-readable storage media and data storage media do not includeconnections, carrier waves, signals, or other transient media, but areinstead directed to non-transient, tangible storage media. Disk anddisc, as used herein, includes compact disc (CD), laser disc, opticaldisc, digital versatile disc (DVD), floppy disk and Blu-ray disc, wheredisks usually reproduce data magnetically, while discs reproduce dataoptically with lasers. Combinations of the above should also be includedwithin the scope of computer-readable media.

Instructions may be executed by one or more processors, such as one ormore digital signal processors (DSPs), general purpose microprocessors,application specific integrated circuits (ASICs), field programmablelogic arrays (FPGAs), or other equivalent integrated or discrete logiccircuitry. Accordingly, the term “processor,” as used herein may referto any of the foregoing structure or any other structure suitable forimplementation of the techniques described herein. In addition, in someaspects, the functionality described herein may be provided withindedicated hardware and/or software modules. Also, the techniques couldbe fully implemented in one or more circuits or logic elements.

The techniques of this disclosure may be implemented in a wide varietyof devices or apparatuses, including a wireless handset, an integratedcircuit (IC) or a set of ICs (e.g., a chip set). Various components,modules, or units are described in this disclosure to emphasizefunctional aspects of devices configured to perform the disclosedtechniques, but do not necessarily require realization by differenthardware units. Rather, as described above, various units may becombined in a hardware unit or provided by a collection ofinteroperative hardware units, including one or more processors asdescribed above, in conjunction with suitable software and/or firmware.

Various examples have been described. These and other examples arewithin the scope of the following claims.

What is claimed is:
 1. A method comprising: receiving, by a computingdevice, notification data; selecting, by the computing device, based onthe notification data, a template graphical user interface (GUI) viewfrom a plurality of template GUI views; automatically generating, by thecomputing device, from a portion of the notification data, anapplication GUI view that includes the portion of the notification dataincluded within one or more fields of the template GUI view; andoutputting, by the computing device, for display, the application GUIview.
 2. The method of claim 1, wherein: the portion of notificationdata is a first portion of notification data, the template GUI view is afirst template GUI view, the application GUI view is a first applicationGUI view, and the notification data includes one or more second portionsof notification data in addition to the first portion of notificationdata; the method further comprising: selecting, by the computing device,based on the notification data, a second template GUI view from theplurality of template GUI views; automatically generating, by thecomputing device, from the one or more second portions of notificationdata, a second application GUI view that includes the one or more secondportions of notification data included within one or more fields of thesecond template GUI view; and outputting, by the computing device, fordisplay, as a single interactive GUI, the second application GUI view inaddition to the first application GUI view.
 3. The method of claim 1,wherein the notification data is first notification data and theapplication GUI view is a first application GUI view, the method furthercomprising: responsive to receiving second notification data, replacing,by the computing device, the first application GUI view with a secondapplication GUI view that is automatically generated from the secondnotification data.
 4. The method of claim 1, further comprising:outputting, by the computing device, for display, a system GUI of anoperating system, wherein application GUI view is output for display aspart of the system GUI.
 5. The method of claim 4, wherein automaticallygenerating the application GUI view further comprises executing, by theoperating system, a new system thread, wherein the application GUI viewis output for display as part of the system GUI during execution of thenew system thread.
 6. The method of claim 5, further comprising:receiving, by the computing device, a user input to exit the applicationGUI view; and responsive to the user input, terminating, by thecomputing device, the new system thread.
 7. The method of claim 6,further comprising: further responsive to the user input, deleting, bythe computing device, from memory, the application GUI view.
 8. Themethod of claim 1, further comprising: determining, a notification typeassociated with the notification data, wherein the template GUI view isselected based on the notification type.
 9. The method of claim 8,wherein the notification type is determined from at least one of: a flagassociated with the portion of notification data; a style identifierassociated with the portion of notification data; or a type identifierassociated with the notification data.
 10. The method of claim 8,wherein the notification type is at least one of: a message notificationtype; a ticket notification type; or a photo notification type.
 11. Acomputing device comprising: a display component configured to displayinformation; an input component configured to receive user input; atleast one processor; a memory comprising instructions that, whenexecuted, cause the at least one processor to: receive notificationdata; select, based on the notification data, a template graphical userinterface (GUI) view from a plurality of template GUI views; andautomatically generate, from a portion of the notification data, anapplication GUI view that includes the portion of the notification dataincluded within one or more fields of the template GUI view; output, fordisplay, using the display component, a graphical alert that thenotification data was received; receive, via the input component, anindication of user input associated with the graphical alert; andresponsive to receiving indication of the user input, replace thegraphical alert with the application GUI view.
 12. The computing deviceof claim 11, wherein the computing device is a first computing deviceand the notification data is received from an application executing at asecond computing device.
 13. The computing device of claim 12, whereinthe first computing device is a wearable device or an automotive deviceand the second computing device is a mobile telephone, laptop computer,or tablet computing device.
 14. The computing device of claim 11,wherein the instructions, when executed, cause the at least oneprocessor to automatically generate, the application GUI view by atleast: populating the one or more fields with the portion of thenotification data after formatting the portion of the notification datato fit a size of a screen of the display component.
 15. The computingdevice of claim 11, wherein the instructions, when executed, cause theat least one processor to automatically generate the application GUIview by at least: determining, by the computing device, based on thenotification data, a primary action associated with the portion of thenotification data; and inserting, by the computing device, a selectableelement associated with the primary action into a location of theapplication GUI view that is visible when the application GUI viewinitially replaces the graphical alert.
 16. The computing device ofclaim 11, wherein the instructions, when executed, further cause the atleast one processor to automatically generate the application GUI viewby at least: determining, by the computing device, based on thenotification data, one or more secondary actions associated with theportion of the notification data; and inserting, by the computingdevice, a respective selectable element associated with each of the oneor more secondary actions into a location of the application GUI viewthat requires a scrolling input before becoming visible when theapplication GUI view initially replaces the graphical alert.
 17. Acomputer-readable storage medium comprising instructions that, whenexecuted, cause at least one processor of a computing device to: receivenotification data; select, based on the notification data, a templategraphical user interface (GUI) view from a plurality of template GUIviews; automatically generate, from a portion of the notification data,an application GUI view that includes the portion of the notificationdata included within one or more fields of the template GUI view; andoutput, for display, the application GUI view.
 18. The computer-readablestorage medium of claim 17, wherein the instructions, when executed,cause the at least one processor of the computing device toautomatically generate the application GUI view by at least: responsiveto determining that the notification data is a messaging notificationtype, inserting, within a message history field of the application GUIview, a portion of a recent conversation between a user of the computingdevice and a sender of a message associated with the notification data;and outputting, for display as part of the application GUI view, theportion of the recent conversation.
 19. The computer-readable storagemedium of claim 18, wherein the instructions, when executed, furthercause the at least one processor of the computing device toautomatically generate the application GUI view by at least:determining, based on the message associated with the notification data,one or more reply messages; and outputting, for display as one or moreselectable elements of the application GUI view, the one or more replymessages.
 20. The computer-readable storage medium of claim 18, whereinthe instructions, when executed, further cause the at least oneprocessor of the computing device to determine the one or more replymessages further based on the portion of a recent conversation.